package map;


import java.util.*;

/*
  map遍历
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("语文",100);
        map.put("数学",110);
        map.put("英语",120);
        map.put("物理",90);
        map.put("化学",150);
        map.put("体育",50);

        System.out.println(map);

        //遍历所有的key
        /*
          Set keySet()
          将当前Map中所有的key以一个Set集合形式返回，遍历该集合元素就等同于遍历当前Map中所有的key
         */
        Set<String> keySet = map.keySet();
        for(String key : keySet){
            System.out.println("key:"+key);
        }

        /*
          Set<Entry> entrySet()
          将当前Map中的所有的键值对以一个Set集合的形式返回
          每一组键值对以一个Entry实例形式表示
          Entry有两个常用方法:getKey()和getValue() 用于获取其表示的键值对中的key和value
         */
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for(Map.Entry<String,Integer> e : entries){
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println(key+":"+value);
        }

        /*
          Collection values()
          将当前Map中所有的value以一个集合的形式返回
         */
        Collection<Integer> values = map.values();
        for(Integer value : values){
            System.out.println("value:"+value);
        }

        /*
          forEach()循环
         */
        Collection<String> c = new ArrayList();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        c.add("five");
        c.forEach(e-> System.out.println(e));

        //Map也支持fouEach方法
        map.forEach((k,v)-> System.out.println(k+":"+v));


    }
}
